1. Field of the Invention
The invention pertains to the field of video transmissions. More particularly, the invention pertains to a system and a method for generating video frames.
2. Description of the Related Art
Virtually all applications of video and visual communication deal with large quantities of video data. To create a video presentation, a rendering computer displays a plurality of digital images (xe2x80x9cframesxe2x80x9d) in succession, thereby simulating movement.
Currently, certain technical problems exist relating to transmitting and rendering a video presentation across low bandwidth computer networks. FIG. 1 illustrates a conventional streaming video system 100. In the video system 100, a media server 102 is connected via a network 104 to a rendering computer 106. The media server 102 typically includes one or more video presentations 110 for transmission to the rendering computer 106.
One problem that is encountered in current streaming systems is that The transmission bandwidth between the media server 102 and the rendering computer 106 is not sufficient to support a real-time seamless presentation, such as is provided by a standard television set. To overcome this problem and allow the user to receive the presentation in real-time, the video presentation is often spatially and temporally compressed. Further, to reduce the amount of data that is transmitted, the media server 102 skips selected frames of the presentation, or, alternatively, the video presentation can be developed having only a few frames per second. The resulting presentations, however, are jittery and strobe-like and are simply not as smooth as a presentation that has a higher frame rate.
To increase the rate at which the frames are displayed to a user, a frame generator 112 may be used to provide intermediate frames between two selected reference frames of the video presentation 110. Typically, frame generators fall within one of two categories: linear motion interpolation systems and motion compensated frame interpolation systems. Linear motion interpolation systems superimpose two reference frames of the video presentation 110 to create one or more intermediate frames. Motion compensated frame interpolation systems use motion vectors for frame interpolation.
FIG. 2 illustrates the data format of a frame 200 according to one motion compensated frame interpolation system. The frame 200 of FIG. 2 is divided into nine horizontal groups of blocks (GOB). Each GOB includes eleven macroblocks. Each macroblock has four luminance blocks of 8 pixels by 8 lines followed by two downsampled chrominance blocks (Cb and Cr).
In motion compensated interpolation systems, selected macroblocks are assigned a motion vector based upon a reference frame. FIG. 3 illustrates an exemplary reference frame 300. Usually, the reference frame is the last frame that was transmitted to the rendering computer 106. Each motion vector points to an equivalently sized region in the reference frame that is a good match for the macroblock that is to be transmitted. If a good representation cannot be found, the block is independently coded.
By sending motion vectors that point to regions in the reference frame already transmitted to the rendering computer 106, the media server 102 can transmit a representation of a frame using less data than if the pixel information for each pixel in each block is transmitted.
Although current frame generators increase the frame rate, they are simplistic in design. These systems do not account for certain idiosyncrasies within selected streaming presentations. For example, current frame generators that use motion compensated frame interpolation do not account for video presentations that have textual characters. Often a video image is overlaid with video text to convey additional information to the viewer. If motion compensated frame interpolation generates an intermediate frame having textual characters, the generated frame may inappropriately move the text to a new position, thereby creating some floating text that was not intended by the creator of the video presentation.
Another problem associated with existing frame generators is that they unintelligently perform frame generation regardless of whether such interpolation results in a better quality video presentation. Although frame interpolation does increase the number of frames presented to the viewer, such frame generation can produce strange results under certain circumstances. Some encoders, for example, choose a motion vector for a selected block based only upon the fact that the motion vector references a block that is a good match for the selected block even though there is no actual motion from one corresponding frame to the other. Thus, since all of the vectors do not represent motion, frame generation in these instances should not always be employed.
Additionally, current frame generators do not perform any type of post filtering to the generated frames. As can be readily appreciated, since motion compensated interpolation systems build an intermediate frame using blocks of pixels, i.e., macroblocks, the pixels at the border of each block may not be a close match to the pixels in the neighboring block. Accordingly, the borders of each of the blocks may be readily visible to a viewer of the media presentation. There is a need for a frame generator that behaves intelligently about the frame generation process. If frame generation would produce anomalous results, frame generation should not be performed. A frame generator should also determine whether the reference frames include textual characters and account for them in the frame generation process. A frame generator should also filter interpolation artifacts from the intermediate frame.
The frame generator of the present invention has several features, no single one of which is solely responsible for its desirable attributes. Without limiting the scope of this invention as expressed by the claims which follow, its more prominent features will now be discussed briefly. After considering this discussion, and particularly after reading the section entitled xe2x80x9cDetailed Description of the Inventionxe2x80x9d one will understand how the features of this invention provide advantages over other frame generators.
One embodiment of the invention includes a method of generating video frames, the method comprising receiving a first frame in a memory in the computer system, the first frame representative of an image at a first instance in time, the first frame including a plurality of first elements and a plurality of motion vectors, each of the motion vectors being associated with one of the plurality of first elements, receiving a second frame in a memory in the computer system, the first frame representative of an image at a second instance in time, the first frame including a plurality of second elements and a plurality of motion vectors, each of the motion vectors being associated with one of the plurality of second elements, modifying at least one of the motion vectors in the first and/or second frames based upon the value of one of the other motion vectors in the first and/or the second frame, and generating at least one intermediate frame based upon the first and/or second elements and the associated motion vectors.
Another embodiment of the invention includes a system for generating frames, the system comprising means for receiving a first frame in a memory in the computer system, the first frame representative of an image at a first instance in time, the first frame including a plurality of first elements and a plurality of motion vectors, each of the motion vectors being associated with one of the plurality of first elements, means for receiving a second frame in a memory in the computer system, the second frame representative of an image at a second instance in time, the second frame including a plurality of second elements and a plurality of motion vectors, each of the motion vectors being associated with one of the plurality of second elements, means for modifying at least one of the motion vectors in the first and/or second frames based upon the value of one of the other motion vectors in the first and/or second frame, and means for generating at least one intermediate frame based upon the first and/or second elements and the associated motion vectors.
Yet another embodiment of the invention includes a system for generating frames, comprising a frame analysis module for receiving frames, each of the frames having a plurality of elements, one or more of the elements having an associated motion vector that identifies a base element, the frame analysis module identifying at least one candidate motion vector, the frame analysis module determining with respect to each of the plurality of elements whether the at least one candidate motion vector identifies a base element which provides a better match than the base element referenced by the motion vector currently associated with a respective element, and if the candidate motion vector identifies a better matching base element, the frame analysis module replacing the motion vector currently associated with the respective element with the candidate motion vector, and a frame synthesis module for generating frames based upon the received frames.
Yet another embodiment of the invention includes a system for generating frames, comprising a frame analysis module for receiving frames, each of the frames having a plurality of elements, one or more of the elements having an associated motion vector that identifies a base element, the frame analysis module determining, with respect to each of the plurality of elements, a median value vector for a group of motion vectors being associated with elements that are positioned proximate to a respective one of the elements, the frame analysis module assigning the median value vector to the respective element, and a frame synthesis module for generating frames based upon the received frames.
Yet another embodiment of the invention includes a method of generating frames, the method comprising receiving a first frame in a memory in the computer system, the first frame representative of an image at a first instance in time, the first frame including a plurality of first elements and a plurality of motion vectors, each of the motion vectors being associated with one of the plurality of first elements, receiving a second frame in a memory in the computer system, the second frame representative of an image at a second instance in time, the second frame including a plurality of second elements and a plurality of motion vectors, each of the motion vectors being associated with one of the plurality of second elements, modifying each of the motion vectors associated with each of the elements based upon the value of at least one of the other motion vectors, and generating at least one intermediate frame based upon the first and second elements and the associated motion vectors.